import { defineStore } from "pinia";
import common_util from "@/util/common_util.js";

export const useLogService = defineStore("logService", {
  state: () => ({}),
  getters: {},
  actions: {
    // queryOperationLogs(params = {}) {
    //   return new Promise((resolve, reject) => {
    //     const queryParams = {
    //       pageNum: params.pageNum || 1,
    //       pageSize: params.pageSize || 10,
    //       userId: params.userId || null,
    //       operationType: params.operationType || null,
    //       startTime: params.startTime || null,
    //       endTime: params.endTime || null,
    //       status: params.status || null,
    //       ...params,
    //     };

    //     common_util.get(
    //       "/api/log/operation/list",
    //       queryParams,
    //       (data) => {
    //         resolve(data);
    //       },
    //       (error) => {
    //         reject(error);
    //       },
    //     );
    //   });
    // },
    // async getDistribution(cycle, date) {
    //   return new Promise((resolve, reject) => {
    //     common_util.get(
    //       "/api/log/stats/operation-type-distribution",
    //       {
    //         cycle,
    //         date,
    //       },
    //       (data) => {
    //         console.log("distribution", data);
    //         resolve(data);
    //       },
    //       (error) => {
    //         reject(error);
    //       }
    //     );
    //   });
    // },
    // //   折线图数据
    // async getTrend(cycle, start, end) {
    //   return new Promise((resolve, reject) => {
    //     common_util.get(
    //       "/api/log/stats/trend", 
    //       { cycle, start, end }, 
    //       (data) => {
    //         console.log(data);
    //         resolve(data);
    //       },
    //       (error) => {
    //         reject(error);
    //       }
    //     );
    //   });
    // },
    // getSummary(cycle, date) {
    //   common_util.get("/api/log/stats/summary", { cycle, date }, (data) => {
    //     console.log(data);
    //   });
    // },
    // getErrorDetails(errorCode, date, pageNum, pageSize) {
    //   common_util.get("/api/log/analysis/error-details", {
    //     errorCode,
    //     date,
    //     pageNum,
    //     pageSize,
    //   });
    // },
    // getSomebody(userId, keyword, startDate, endDate, pageNum, pageSize) {
    //   common_util.get(
    //     "/api/log/analysis/error-details",
    //     {
    //       errorCode,
    //       date,
    //       pageNum,
    //       pageSize,
    //       startDate,
    //       endDate,
    //     },
    //     (data) => {
    //       console.log(data);
    //     },
    //   );
    // },

    /**
     * 查询操作日志列表 (支持分页和筛选)
     * @param {object} params - 查询参数
     * @param {number} [params.pageNum=1] - 页码
     * @param {number} [params.pageSize=10] - 每页数量
     * @param {number} [params.userId] - 用户ID
     * @param {string} [params.operationType] - 操作类型
     * @param {string} [params.startTime] - 开始时间 (格式: 'YYYY-MM-DD HH:mm:ss')
     * @param {string} [params.endTime] - 结束时间 (格式: 'YYYY-MM-DD HH:mm:ss')
     * @param {number} [params.status] - 状态 (1: 成功, 0: 失败)
     * @returns {Promise<object>} - 包含日志列表和分页信息的Promise
     */
    queryOperationLogs(params = {}) {
      return new Promise((resolve, reject) => {
        common_util.get(
          "/api/log/operation/list",
          params,
          (data) => {
            resolve(data);
          },
          (error) => {
            console.error("Failed to query operation logs:", error);
            reject(error);
          },
        );
      });
    },

    /**
     * 获取操作类型分布统计 (用于饼图)
     * @param {string} cycle - 统计周期 ('DAY', 'WEEK', 'MONTH')
     * @param {string} date - 目标日期 (格式: 'YYYY-MM-DD')
     * @returns {Promise<Array<object>>} - 操作类型统计数据数组的Promise
     */
    getOperationTypeDistribution(cycle, date) {
      return new Promise((resolve, reject) => {
        common_util.get(
          "/api/log/stats/operation-type-distribution",
          { cycle, date },
          (data) => {
            resolve(data);
          },
          (error) => {
            console.error("Failed to get operation type distribution:", error);
            reject(error);
          }
        );
      });
    },

    /**
     * 获取统计趋势数据 (用于折线图)
     * @param {string} cycle - 统计周期 ('DAY', 'WEEK', 'MONTH')
     * @param {string} start - 开始日期 (格式: 'YYYY-MM-DD')
     * @param {string} end - 结束日期 (格式: 'YYYY-MM-DD')
     * @returns {Promise<Array<object>>} - 趋势统计数据数组的Promise
     */
    getStatsTrend(cycle, start, end) {
      return new Promise((resolve, reject) => {
        common_util.get(
          "/api/log/stats/trend",
          { cycle, start, end },
          (data) => {
            resolve(data);
          },
          (error) => {
            console.error("Failed to get stats trend:", error);
            reject(error);
          }
        );
      });
    },

    /**
     * 获取周期聚合统计
     * @param {string} cycle - 统计周期 ('DAY', 'WEEK', 'MONTH')
     * @param {string} date - 目标日期 (格式: 'YYYY-MM-DD')
     * @returns {Promise<Array<object>>} - 周期概要统计数据数组的Promise
     */
    getCycleSummary(cycle, date) {
      return new Promise((resolve, reject) => {
        common_util.get(
          "/api/log/stats/summary",
          { cycle, date },
          (data) => {
            resolve(data);
          },
          (error) => {
            console.error("Failed to get cycle summary:", error);
            reject(error);
          }
        );
      });
    },

    /**
     * 获取错误日志详情
     * @param {object} params - 查询参数
     * @param {string} [params.errorCode] - 错误码
     * @param {string} [params.date] - 日期 (格式: 'YYYY-MM-DD')
     * @param {number} [params.pageNum=1] - 页码
     * @param {number} [params.pageSize=10] - 每页数量
     * @returns {Promise<object>} - 包含错误日志列表和分页信息的Promise
     */
    getErrorDetails(params = {}) {
       return new Promise((resolve, reject) => {
            common_util.get(
                "/api/log/analysis/error-details",
                params,
                (data) => {
                    resolve(data);
                },
                (error) => {
                    console.error("Failed to get error details:", error);
                    reject(error);
                }
            );
       });
    },
  },
});
